import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# 1. 数据生成（假设τ_t在[0, 1]范围内变化）
tau_t = np.linspace(0, 1, 100)  # τ_t从0到1均匀分布

# ASR和WER的变化趋势（实际数据需替换此处）
ASR = 0.8 * np.exp(-2.5 * tau_t) + 0.1 * np.random.randn(100)  # ASR随τ_t增加而指数下降
WER = 0.1 * np.exp(1.2 * tau_t) + 0.05 * np.random.randn(100)  # WER随τ_t增加而上升

# 2. 创建图形和双坐标轴
fig, ax1 = plt.subplots(figsize=(6, 5))
plt.rcParams['font.family'] = 'SimHei'  # 支持中文显示
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 3. 绘制ASR折线图（左侧Y轴）
color_asr = 'red'
ax1.set_xlabel('Defense Threshold $\\tau_t$', fontsize=14)
ax1.set_ylabel('Attack Success Rate (ASR%)', color=color_asr, fontsize=16)
ax1.plot(tau_t, ASR * 100, color=color_asr, linewidth=1.5, linestyle='-', marker='o', markersize=0, label='ASR')
ax1.tick_params(axis='y', labelcolor=color_asr)
ax1.set_ylim(0, 100)  # ASR范围为0-100%
ax1.grid(True, linestyle='--', alpha=0.6)

# 4. 创建右侧Y轴并绘制WER折线图
ax2 = ax1.twinx()
color_wer = 'blue'
ax2.set_ylabel('Word Error Rate(WER%)', color=color_wer, fontsize=16)
ax2.plot(tau_t, WER * 100, color=color_wer, linewidth=1, linestyle='-', marker='s', markersize=0, label='WER')
ax2.tick_params(axis='y', labelcolor=color_wer)
ax2.set_ylim(0, 30)  # WER范围0-30%

# 5. 添加标题和图例
# plt.title('动态防御机制效能分析: $\\tau_t$ 对ASR和WER的影响', fontsize=16, pad=20)

# 合并图例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines1 + lines2, labels1 + labels2, loc='upper right', fontsize=12)

# 6. 添加关键点标注
# ax1.annotate('最佳平衡点', 
#              xy=(0.35, ASR[35]*100), 
#              xytext=(0.5, 60),
#              arrowprops=dict(facecolor='black', shrink=0.05),
#              fontsize=12)

# 7. 显示图表
plt.tight_layout()
plt.savefig('Fig8.png', dpi=800)
plt.show()
